#include <iostream>

using namespace std;
class Solution {
public:
    int GetUglyNumber_Solution(int index) {
    	if(index <= 0)
    		return 0;
    	int t2=0,t3=0,t5=0,n=1,min;
    	int arr[index];
    	arr[0] = 1;
    	while(n < index)
    	{
    		min = compare(arr,t2,t3,t5);
    		cout<<"min : "<<min<<",t2,t3,t5 : "<<t2<<","<<t3<<","<<t5<<endl;
    		arr[n++] = min;
    	}
    	return arr[n-1];
    }
    int compare(int arr[],int &t2,int &t3, int &t5)
    {
    	int m2 = arr[t2] *  2;
    	int m3 = arr[t3] * 3;
    	int m5 = arr[t5] * 5;
    	if(m2 < m3)
    	{
    		if(m2 < m5)
    		{
    			++t2;return m2;
    		}
    		else if(m2 == m5)
    		{
    			++t2;++t5;return m5;
    		}
    		else
    		{
    			++t5;return m5;
    		}
    	}
    	else if(m2 == m3)
    	{
    		if(m2 < m5)
    		{
    			++t2;++t3;return m2;
    		}
    		else if(m2 == m5)
    		{
    			++t2;++t3;++t5;return m2;
    		}
    		else
    		{
    			++t5;return m5;
    		}
    	}
    	else
    	{
    		if(m2 > m5)
    		{
    			if(m3 < m5)
    			{
    				++t3;return m3;
    			}
    			else if(m3 == m5)
    			{
    				++t3;++t5;return m5;
    			}
    			else
    			{
    				++t5;return m5;
    			}
    		}
    		else
    		{
    			++t3;return m3;
    		}
    	}
    }
};

int main()
{
	Solution s;
	cout<<s.GetUglyNumber_Solution(10)<<endl;
	return 0;
}